home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 February / EnigmA AMIGA RUN 04 (1996)(G.R. Edizioni)(IT)[!][issue 1996-02][Skylink CD III].iso / earcd / midi / gfft.lha / gfft-2.03 / source / gfft-2.03-source.lha / okmesh.c < prev    next >
C/C++ Source or Header  |  1996-01-02  |  2KB  |  65 lines

  1. /***************************************************************************
  2.  *          Copyright (C) 1994  Charles P. Peterson                  *
  3.  *         4007 Enchanted Sun, San Antonio, Texas 78244-1254             *
  4.  *              Email: Charles_P_Peterson@fcircus.sat.tx.us                *
  5.  *                                                                         *
  6.  *          This is free software with NO WARRANTY.                  *
  7.  *          See gfft.c, or run program itself, for details.              *
  8.  *              Support is available for a fee.                      *
  9.  ***************************************************************************
  10.  *
  11.  * Program:     gfft--General FFT analysis
  12.  * File:        okmesh.c
  13.  * Purpose:     Generate a mesh vector for smoothing
  14.  * Author:      Charles Peterson (CPP)
  15.  * History:     22-January-1994 CPP; Created.
  16.  * Comment:     If LogX mode, mesh is logarithmic
  17.  */
  18.  
  19. #include <math.h>
  20. #include "gfft.h"
  21. #include "settings.h"
  22.  
  23. double *ok_mesh (double nyquist_frequency, double delta_frequency)
  24. {
  25.     double *mesh = NULL;
  26.     double delta = 1;
  27.     double base_log = 0;
  28.     long i;
  29.  
  30.     if (SmoothingSegments != NO_SMOOTHING)
  31.     {
  32.     mesh = gmalloc (sizeof(double) * SmoothingSegments, 
  33.             NOTHING_SPECIAL);
  34.     if (LogX)
  35.     {
  36.         delta = log (nyquist_frequency / delta_frequency) /
  37.                                                      SmoothingSegments;
  38.         base_log = log (delta_frequency);
  39.         mesh[0] = delta_frequency;
  40.     }
  41.     else
  42.     {
  43.         delta = nyquist_frequency / SmoothingSegments;
  44.         mesh[0] = delta;
  45.     }
  46.  
  47.     for (i = 2; i < SmoothingSegments; i++)
  48.     {
  49.         if (LogX)
  50.         {
  51.         mesh[i-1] = exp (base_log + delta * i);
  52.         }
  53.         else
  54.         {
  55.         mesh[i-1] = delta * i;
  56.         }
  57.     }
  58.     mesh[i-1] = nyquist_frequency;  /* Last value must be exact */
  59.     }
  60.     return mesh;
  61. }
  62.  
  63.  
  64.  
  65.